// KeyPhraseCollection.cpp: implementation of the KeyPhraseCollection class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "KeyPhraseCollection.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////




int KeyPhraseCollection::AddKeyPhraseItem( string ToInKeyPhrase )
{
	KeyPhraseItem objKeyPhraseItem;
	int index = MyKeyPhrases.size() + 1;
	pair< KeyPhraseMap::iterator , bool > PairToKPhraseMap;	
	objKeyPhraseItem.SetIndex( index );
	PairToKPhraseMap = MyKeyPhrases.insert(KeyPhraseMap::value_type( ToInKeyPhrase , objKeyPhraseItem ) );
	if ( PairToKPhraseMap.second == false )
	{
		PairToKPhraseMap.first->second.SetFrequency( PairToKPhraseMap.first->second.GetFrequency() +1 );
		return PairToKPhraseMap.first->second.GetIndex();
	}
	else
		return index;
}//AddKeyPhraseItem

int KeyPhraseCollection::FindKeyPhraseItem( string ToInKeyPhrase )
{
	KeyPhraseMap::iterator pos;
	pos = MyKeyPhrases.find( ToInKeyPhrase );
	if ( pos == MyKeyPhrases.end() )
		return 0;
	else
		return pos->second.GetIndex();
}//FindKeyPhraseItem

void KeyPhraseCollection::ReadKeyPhrasesFromFile(string FilePath)
{
	ifstream f( FilePath.c_str() );
	int NumOfKeyPhrases = 0;
	char Phrase[512];
	string StrParse;
	KeyPhraseItem objKeyPhraseItem;
	Phrase[0] = '\0';
	f>>NumOfKeyPhrases;
	f.getline( Phrase , 511 );
	for ( int i = 0 ; i < NumOfKeyPhrases ; i++ )
	{
		StrParse.erase();
		objKeyPhraseItem.SetIndex( i + 1 );
		f.getline( Phrase , 511 );
		StrParse.assign( Phrase );
		objKeyPhraseItem.SetFrequency( atoi( (StrParse.substr(StrParse.find(";") + 1 , StrParse.length() -  StrParse.find(";") + 1 )).c_str() ));
		StrParse=StrParse.substr( 0 , StrParse.find(";") );
		MyKeyPhrases.insert(KeyPhraseMap::value_type( StrParse , objKeyPhraseItem ) );
	}
	f.close();
}//KeyPhraseCollection
